import request from '@/utils/request';

const DEPT_BASE_URL = '/admin/dict/item';

const DictItemAPI = {
  /**
   * 获取字典项列表
   *
   * @param queryParams 查询参数（可选）
   * @returns 字典项树形表格数据
   */
  getList(queryParams?: any) {
    return request<any, DictItemVO[]>({
      url: `${DEPT_BASE_URL}/page`,
      method: 'get',
      params: queryParams,
    });
  },

  /**
   * 获取字典项表单数据
   *
   * @param id 字典项ID
   * @returns 字典项表单数据
   */
  getFormData(id: number) {
    return request<any, DictItemVO>({
      url: `${DEPT_BASE_URL}/${id}/form`,
      method: 'get',
    });
  },

  /**
   * 新增字典项
   *
   * @param data 字典项表单数据
   * @returns 请求结果
   */
  create(data: DictItemVO) {
    return request({
      url: `${DEPT_BASE_URL}`,
      method: 'post',
      data: data,
    });
  },

  /**
   * 修改字典项
   *
   * @param id 字典项ID
   * @param data 字典项表单数据
   * @returns 请求结果
   */
  update(data: DictItemVO) {
    return request({
      url: `${DEPT_BASE_URL}`,
      method: 'put',
      data: data,
    });
  },
  deleteById(id: number) {
    return request({
      url: `${DEPT_BASE_URL}/${id}`,
      method: 'delete',
    });
  },
  /**
   * 删除字典项
   *
   * @param ids 字典项ID，多个以英文逗号(,)分隔
   * @returns 请求结果
   */
  deleteByIds(ids: number[]) {
    return request({
      url: `${DEPT_BASE_URL}`,
      method: 'delete',
      data: ids,
    });
  },

  getListByFilter(filter: DictItemVO) {
    return request({
      url: `${DEPT_BASE_URL}/details`,
      method: 'get',
      params: filter,
    });
  },

  epoxrtExcel(queryParams: any) {
    return request({
      url: `/admin/dict/export`,
      method: 'get',
      params: queryParams,
      responseType: 'blob',
    });
  },
};

export default DictItemAPI;

/** 字典项类型 */
export interface DictItemVO {
  /** 所属字典ID */
  dictId?: string;
  /** 创建时间 */
  createTime?: string;
  /** 字典项ID */
  id?: number;
  /** 字典项名称 */
  label?: string;
  /** 字典项值 */
  value?: string;
  /** 字典类型 */
  dictType?: string;
  /** 描述 */
  description?: string;
  /** 备注 */
  remarks?: string;
  /** 修改时间 */
  updateTime?: string;
  /** 排序(升序) */
  sortOrder?: number;
  /** 创建人 */
  createBy?: string;
  /** 修改人 */
  updateBy?: string;
}
